home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
C64
/
A-Monthly Disks
/
(c)abe.d64
/
dbase64.v1
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2007-02-04
|
18KB
|
493 lines
0 UD$="N":PRINT"[147] *** DBASE64.V1 BY R.JACOBS 2/88 **"
5 PRINT"ARE YOU USING A DISK DRIVE (Y/N)":INPUTUD$
130 WQ$="CLOSE THE FILE NOW? Y[146] CLOSE IT F1[146] NO"
140 CP=2:IFUD$="Y"THEN OPEN15,8,15:PRINT#15,"UJ"
150 IFCP=1ANDUD$="Y"THENPRINT#15,"UI-"
160 M2$=" [146]C [146]D [146]G [146]H [146]I [146]M [146]P [146]R [146]S [146]X [146]F1 "
162 M3$=" [146]@@@ QUITS [146]":X1=1:X2=1:C6=0:C1=0:C4=0:C7=0
170 M1$="REC. NO.:[146]":M4$=" [146]G [146]P [146]H [146]X [146]F1 [146]"
180 PRINT"[147] DBASE64.V1 [146] BY DICK JACOBS[146]"
190 PRINT" 1[146]-CREATE NEW FILE 11[146]-BYTES FREE"
200 PRINT" 2[146]-ADD MORE RECORDS 12[146]-RENAME FIELDS"
210 PRINT" 3[146]-SORT RECORDS 13[146]-CLOSE FILE "
220 PRINT" 4[146]-EDIT RECORDS 14[146]-INDEX FILE"
230 PRINT" 5[146]-SAVE FILE 15[146]-DISK DIRECTORY"
240 PRINT" 6[146]-LOAD FILE 16[146]-DISK STATUS"
250 PRINT" 7[146]-BREAK PROGRAM 17[146]-SET COLORS"
260 PRINT" 8[146]-PRINT RECORDS 18[146]-DISK COMMANDS"
270 PRINT" 9[146]-SEARCH & SUM 19[146]-CONFIG SYS"
280 PRINT"10[146]-SUM A FIELD 20[146]-HELP":PRINT
290 IFC1ORC4ORC6THENPRINT" CAUTION: FILE OPEN[146]"
300 IFUD$="Y"THENPRINT"COMMAND CHANNEL OPEN[146]"
305 PRINT"FILE DIMENSIONS: ";LK+1;"[146] X ";KL;"[146]RECS."
310 PRINT"NO. OF RECORDS IN CURRRENT FILE:[146]";B
320 PRINT"ENTER A COMMAND (1-20):[146]";:INPUTC:IFC>25THEN180
330 IF C>16GOTO360
340 ONCGOSUB380,420,2020,1180,810,1800,2010,1410,610,550,1990,2530,2440,3100,2730,2960
350 GOTO180
360 ON C-16GOSUB3520,3650,4500,4700
370 GOTO180
380 IFY=1THENRETURN
390 PRINT"[147]":GOSUB2350:Y=1:B=1:N=LK: GOTO410:REMPRINT"CREATE FILE[146]"
400 PRINT"CREATE HOW MANY FIELDS":INPUTN:N=N-1
410 PRINT"[147]":FORA=0TON:PRINT"ENTER NAME FOR FIELD[146]";A :INPUTFF$(A):NEXTA
420 IF Y<>1THENRETURN
430 GOSUB2320:PRINT"BEGIN ENTERING YOUR RECORDS. TYPE @@@[146]";
432 PRINT" IN FIRST FIELD TO STOP":A=0
434 IFX2=1THENPRINT"INPUT DEFAULT IS COPY PREVIOUS FIELD[146]"
436 IFX2=2THENPRINT"INPUT DEFAULT IS BLANK ON RETURN[146]"
440 IFB>1THENGOSUB4000:PRINT"PREV. REC":PRINT:FORA=0TON:PRINTF$(A,B-1):NEXTA:A=0
450 PRINT" "
451 PRINT" "
452 PRINT" [145][145][145]":PRINT
453 PRINTM1$;B;M3$:PRINT
457 IFB=>KL-1THENPRINT" ARRAY FULL - SAVE FILE[146]":FORA=1TO12:GOSUB510:NEXTA
460 IF B=>KL-1THENA=0:F$(A,B)="@@@":RETURN
470 IFA>NTHEN500
480 IFX2=1THENF$(A,B)=F$(A,B-1)
481 IFX2=2THENF$(A,B)="."
482 PRINT"";FF$(A);"[146]";:INPUTF$(A,B):IFF$(0,B)="@@@"THENRETURN
490 A=A+1:GOTO470
500 A=0:B=B+1:PRINT:GOSUB510:GOTO450
510 IFCP=1THENPOKEVL,15:POKEVO,245:FORO=1TO20:NEXTO:POKEVL,0:POKEVO,0:RETURN
520 POKE54272+24,15:POKE54272+2,255:POKE54272+3,0:POKE54272+5,9
530 POKE54272+6,0:POKE54272+1,18:POKE54272,104:POKE54272+4,65
540 FORO=1TO50:NEXTO:POKE54272+4,64:FORO=1TO50:NEXTO:RETURN
550 IF Y<>1THENRETURN
560 GOSUB2320:INPUT"SUM FD #";U:IFU>NTHENGOSUB5000:GOTO560
563 T=0:PRINT"[147]":FORD=1TOB-1:T=T+VAL(F$(U,D))
570 PRINT"RECORD #:";D;" "
580 PRINT"VALUE : ";VAL(F$(U,D));"SUMMATION "
590 PRINT"SUMMATION ";T:NEXT
600 QX$="[157][157] ":GOSUB2410:RETURN
610 IF Y<>1THENRETURN
620 GOSUB2320:INPUT"SEARCH FOR";R$:INPUT"SEARCH FIELD";F1
622 IFF1>NTHENGOSUB5000:GOTO620
630 INPUT"FIELD TO SUM? OR ENTER 99[146] TO BYPASS SUM.";U
633 QX$="SEARCH":GOSUB2410:IFA$<>"Y"THENRETURN
640 PRINT"[147]SEARCHING FOR[146] ";R$;"ON REC #:MATCHES FOUND:"
650 T=0:F=0:FORS=1TOB-1:PRINT"";S;"SUMMATION:"
660 IFLEN(F$(F1,S))<1ORLEN(F$(F1,S))<LEN(R$)THEN690
670 FORF2=1TOLEN(F$(F1,S))-LEN(R$)+1:IFMID$(F$(F1,S),F2,LEN(R$))=R$THENGOSUB770
680 NEXTF2
690 NEXTS
700 PRINT"[147]":IFF=0THENPRINT" ";R$;"[146] NOT FOUND"
710 PRINT"PRINT LIST TO1[146] SCREEN 2[146] TAPE/DISK"
720 PRINT"3[146] PRINTER 4[146] ABORT"
730 IFC1ORC4ORC6THENPRINT"CAUTION: FILES OPEN"
740 INPUTGH
750 ONGHGOSUB3410,810,1410:IFGH>3THEN RETURN
760 GOTO700
770 F=F+1:IFF3(F-1)=STHENF=F-1:RETURN
780 F3(F)=S:PRINT"";F:IFU>NTHENGOSUB510:RETURN
790 T=T+VAL(F$(U,S)):PRINT" "
800 PRINT"";T:GOSUB510:RETURN
810 IFY<>1THENRETURN
820 IFC6=1THENPRINT"[147]":GOTO920
830 GOSUB2320:PT$="SAVE TO[146] ":GOSUB3030
840 QX$="SAVE ":GOSUB2410:IFA$<>"Y"THENRETURN
850 IFSV$="D"THENOPEN6,8,3,"@0:"+C$+",S,W":PRINT#6,C$;CHR$(13);
860 IFSV$="T"THENOPEN6,1,1,C$:PRINT#6,C$;CHR$(13);
870 PRINT"[147]SAVING ";C$:PRINT#6,N+1;CHR$(13);:IFC=5ORC=3THENPRINT#6,B;CHR$(13);
880 IFC=9THENPRINT#6,F+1;CHR$(13);
890 FORA=0TON:IFFF$(A)=""THENPRINT#6,".";CHR$(13);
900 IFFF$(A)<>""THENPRINT#6,FF$(A);CHR$(13);
910 NEXTA
920 IFC=5THENGOSUB1740:RETURN
930 IFC=3THENRETURN
940 FORD=1TOF:PRINT"RECS SAVED";D
950 FORA=0TON:IFF$(A,F3(D))=""THENPRINT#6,".";CHR$(13);
960 IFF$(A,F3(D))<>""THENPRINT#6,F$(A,F3(D));CHR$(13);
970 NEXTA,D:C6=1:PRINTWQ$:GOSUB2420:IFA$="Y"THENC7=6
980 IFA$="Y"THENGOSUB2500:RETURN
990 RETURN
1000 FORD=1TOF:IFSV$="Y"THENPRINT#4,F3(D);
1010 FORA=P3TOP4:PRINT#4,CHR$(16)P$(A)F$(A,F3(D));:NEXTA:PRINT#4
1020 IFLU$="Y"THENFORX=1TOTT:PRINT#4,CHR$(99);:NEXTX:PRINT#4
1030 IFUL$="Y"THENFORX=1TO80:PRINT#4,CHR$(99);:NEXTX:PRINT#4
1040 IFI$="D"THENPRINT#4,CHR$(10);
1050 GETA$:IFA$="[133]"THENFORD=1TO1:NEXTD:GOTO1070
1060 NEXTD:PRINT#4,CHR$(10);:IFU<=NTHENPRINT#4,"TOTAL"CHR$(16)P$(U)T
1070 PRINT#4:PRINT#4:C4=1:PRINTWQ$:GOSUB2420:IFA$="Y"THENC7=4:GOSUB2490
1080 RETURN
1090 IFB=>KL-1THENGOSUB2560:RETURN
1100 PRINTX$:B=B+1:FORDD=BTOD+1STEP-1:REM INSERT
1110 FORA=0TON:F$(A,DD)=F$(A,DD-1):NEXTA:NEXTDD:GOTO1150
1120 IFD=BTHEN1150:REM DELETE
1130 PRINTX$:FORDD=DTOB-1:FORA=0TON:F$(A,DD)=F$(A,DD+1):NEXTA:NEXTDD
1140 GOSUB510:B=B-1:RETURN
1150 IFD>=BANDU$="REPLACE[146]"THENPRINT"CAN'T ";U$;" IT":RETURN
1160 GOSUB510:PRINT"ENTER NEW REC[146]";D;" [146]"
1170 FORA=0TON:PRINT""FF$(A);"[146]";:INPUTF$(A,D):NEXTA:GOSUB510:RETURN
1180 D=1:ZX=1:IF Y<>1THENRETURN
1190 PRINT"[147]"
1191 PRINT"F1[146] ABORT R[146] REPLACE D[146] DELETE I[146] INSERT G[146] GOTO";
1200 PRINT" C[146] COPY P[146] PREVIOUS M[146] MOVE S[146] SEARCH";
1202 PRINT" X[146] CONFIG H[146] HELP"
1205 IFA$="H"THEN1240
1210 IFX1=2ANDD>1THENPRINT"[147]"
1211 PRINT" "
1212 PRINT" "
1213 PRINT" [145][145][145]":PRINT
1214 PRINTM1$;D;M2$:PRINT
1220 FORA=0TON:PRINT"";FF$(A);": [146]";:PRINTF$(A,D):NEXTA
1230 IFZX=0THENR=1:ZX=1:RETURN
1240 GETA$:IFA$=""THEN1240
1250 V$=A$
1260 IFA$="R"THENU$="REPLACE[146]":GOSUB1620
1270 IFA$="[133]"THENGOSUB2520:A=0:RETURN
1280 IFA$="D"THENU$="DELETE[146]":GOSUB1620
1290 IFA$="I"THENU$="INSERT AS[146]":GOSUB1620
1300 IFA$="M"THENU$="MOVE[146]":GOSUB1620
1310 IFA$="G"THENGOSUB1380
1320 IFA$="S"THENGOSUB3290
1330 IFA$="C"THENU$="COPY[146]":GOSUB1620
1335 IFA$="X"THENGOSUB4500:GOTO1210
1337 IFA$="H"THEN1191
1340 IFA$="P"ANDD>1THEND=D-1:PRINT"[147]":GOTO1210
1350 IFR=1THENR=0:GOTO1210
1360 IFD>=BTHEN1240
1370 D=D+1:GOTO1210
1380 INPUT" GOTO WHERE[146]";D:R=1:IFC=4ANDD>BTHEND=B
1390 IFZX=0ANDD>BTHEND=B
1400 PRINT"[147]":RETURN
1410 IFY<>1THENRETURN
1420 IFC4=1THENPRINT"[147]":GOTO1540
1430 GOSUB2320:PRINT"NAME FOR LIST[146]":INPUTC$:INPUT"SPACING S[146] OR D[146]";I$
1440 IFC=8THENINPUT"FROM REC #";P1:INPUT"TO REC #";P2:IFP2>BTHENP2=B
1450 INPUT"PRINT REC#'S (Y/N)";SV$:GOSUB2570
1460 INPUT"FULL UNDERLINE[160](Y/N)";UL$:PRINT"SHORT UNDERLINE (Y/N)":INPUTLU$
1470 PRINT"ENTER 01-80 OR RETURN[146]":FORA=P3TOP4:PRINT"FIELD";A;"AT";
1480 INPUTP$(A):NEXTA
1490 QX$="PRINT":GOSUB2410:IFA$<>"Y"ANDC=9THENPRINT"[147]":RETURN
1500 IFA$<>"Y"THENRETURN
1510 OPEN4,4:PRINT#4,C$:PRINT#4
1520 FORA=P3TOP4:PRINT#4,CHR$(16)P$(A)FF$(A);:NEXTA:PRINT#4,CHR$(13)
1530 IFUL$="Y"THENFORX=1TO80:PRINT#4,CHR$(99);:NEXTX:PRINT#4
1540 PRINT" F1[146] ABORTS PRINTOUT":IFC=9THEN1000
1550 FORD=P1TOP2:IFSV$="Y"THENPRINT#4,D;
1560 FORA=P3TOP4:PRINT#4,CHR$(16)P$(A)F$(A,D);:NEXTA:PRINT#4
1570 IFLU$="Y"THENFORX=1TOTT:PRINT#4,CHR$(99);:NEXTX:PRINT#4
1580 IFUL$="Y"THENFORX=1TO80:PRINT#4,CHR$(99);:NEXTX:PRINT#4
1590 IFI$="D"THENPRINT#4,CHR$(10);
1600 GETA$:IFA$="[133]"THENFORD=1TO1
1610 NEXTD:PRINT#4:C4=1:RETURN
1620 V$=A$:A$=STR$(D)
1630 PRINTU$;" WHAT RECORD (N[146] TO ABORT)":INPUTA$
1640 IFVAL(A$)<1THENA$=V$:RETURN
1650 D=VAL(A$):IFD>BTHEND=B
1660 IFV$="I"THEN1680
1670 IFD>B-1THENPRINT" MAXIMUM=[146]";B-1;" [146]":GOTO1630
1680 R=1:IFV$="D"THENGOSUB1120
1690 IFV$="M"THENPRINTX$:GOSUB2270
1700 IFV$="R"THENGOSUB1150
1710 IFV$="I"THENGOSUB1090
1720 IFV$="C"THENGOSUB2140
1730 A$=V$:RETURN
1740 FORD=1TOB-1:PRINT"RECS SAVED";D:FORA=0TON
1750 IFF$(A,D)=""THENPRINT#6,".";CHR$(13);
1760 IFF$(A,D)<>""THENPRINT#6,F$(A,D);CHR$(13);
1770 NEXTA:NEXTD:C6=1
1780 PRINTWQ$:GOSUB2420:IFA$="Y"THENC7=6:GOSUB2500
1790 RETURN
1800 PRINT"[147]";:PT$="LOAD FROM[146] ":GOSUB3030:QX$="LOAD":GOSUB2410:IFA$<>"Y"THENRETURN
1810 PRINT"[147]OPENING FILE[146]":IFSV$="T"THENOPEN1,1,0,C$
1820 IFSV$="D"THENOPEN1,8,2,C$+",S,R"
1830 INPUT#1,C$,NN,D:GOSUB2330:GOSUB2350:C1=1
1840 IFNN-1<NTHENPRINT"FIELDS IN FILE < FIELDS IN MEMORY FILE[146]"
1850 IFNN-1>NTHENPRINT"FIELDS IN FILE > FIELDS IN MEMORY FILE[146]"
1860 IFB+D>KLORNN-1>LKTHENPRINT"EXCEEDS CURRENT ARRAY OF ";KL-1;" X ";LK+1
1870 IFB+D>KLORNN-1>LKTHENFORA=1TO15:GOSUB510:NEXT:C1=0:CLOSE1:RETURN
1880 D=1:NN=NN-1:PRINT"FILE:[146] ";C$:PRINT"FIELDS ARE:[146]"
1882 FOR A=0TONN:INPUT#1,J$(A):PRINTJ$(A):NEXTA:PRINT""
1890 W=0:PRINT" Y[146]-LOAD F1[146]-ABORT"
1900 PRINT"NOTE: LOAD WILL USE FIELD NAMES OF INCOMING FILE"
1910 GETA$:IFA$=""THEN1910
1920 PRINT"[147]":IFA$<>"Y"THENC1=0:CLOSE1:RETURN
1930 :N=NN:FORA=0TON:FF$(A)=J$(A):NEXTA
1940 PRINT"RECORDS READ[146]";D
1950 FORA=0TON:F$(A,B)="":INPUT#1,F$(A,B):IFLEFT$(F$(A,B),3)="@@@"THENA=N:W=1
1960 NEXTA:IFW=1THEN1980
1970 D=D+1:B=B+1:GOTO1940
1980 CLOSE1:Y=1:A=0:C1=0:RETURN
1990 PRINT"[147]STAND BY..":X=FRE(9):PRINT" BYTES FREE=";X
2000 QX$="[157][157][157][157] ":GOSUB2410:RETURN
2010 PRINT"[147]ENTER GOTO180[146] AND PRESS RETURN TO RETAINCURRENT FILE IN MEMORY"
2012 PRINT"IF YOU WISH TO ERASE CURRENT FILE IN"
2013 PRINT"MEMORY, ENTER RUN[146] AND PRESS RETURN.":PRINT
2014 PRINT"BUT...BE SURE YOU HAVE CLOSED[146] ALL"
2015 PRINT "OPEN FILES FIRST. TO DO THIS, ENTER"
2016 PRINT"GOTO 180[146] AND PRESS RETURN AND CHOOSE"
2017 PRINT"MENU ITEM 13[146] TO CLOSE THE OPEN FILES":END
2020 IF Y<>1THENRETURN
2030 GOSUB2320:PRINT"SORT WILL DESTROY THE FILE CURRENTLY IN MEMORY.[146]";
2032 PRINT" ABORT AT [146]ABORT PROMPT BELOW ANDSAVE FILE FIRST.[146]"
2034 INPUT"SORT WHAT FIELD";Z:IFZ>NTHENGOSUB5000:RETURN
2040 QX$="INDEX ":PT$="SAVE TO[146] ":GOSUB3030:GOSUB840:IFA$<>"Y"THENRETURN
2050 F$(Z,B)="ZZZ":E=1:PRINT"[147]SORTING";B-1;" RECORDS[146]"
2060 I=1:FORJ=2TOB:IFF$(Z,I)<F$(Z,J)THEN2080
2070 I=J
2080 NEXTJ
2090 IFF$(Z,I)="ZZZ"THEN2120
2100 PRINT"";E;" RECS SORTED":FORA=0TON
2110 S$(A,1)=F$(A,I):PRINT#6,S$(A,1);CHR$(13);:NEXTA:E=E+1:F$(Z,I)="ZZZ":GOTO2060
2120 PRINT"CLOSING":FORA=0TON:PRINT#6,"@@@";CHR$(13);:NEXTA
2130 CLOSE6:QX$="[157][157][157]SORT IS DONE":GOSUB2410:RETURN
2140 FORA=0TON:CC$(A,1)=F$(A,D):NEXTA:IFB=>KL-1THENGOSUB2560:A$=V$:RETURN
2150 PRINT"[145]":PRINT" SPACE G P F7 TO PLACE)[146]"
2160 GETA$:IFA$=""THEN2160
2170 IFA$="[136]"THEN2220
2180 ZX=0:IFA$="G"THENGOSUB1380
2190 IFA$="P"THENPRINT"[147]":D=D-1:IFD<1THEND=1
2200 IFA$=" "THEND=D+1:IFD>BTHEND=B
2210 ZX=0:GOSUB1210:ZX=1:GOTO2150
2220 PRINT"[145]":PRINTU$;" TO REC# ":INPUTD:PRINTX$:IFD>BTHEND=B
2230 IFA$="M"THENGOTO2300
2240 B=B+1:FORDD=BTOD+1STEP-1:FORA=0TON:F$(A,DD)=F$(A,DD-1):NEXTA:NEXTDD
2250 FORA=0TON:F$(A,D)=CC$(A,1):NEXTA
2260 PRINTU$;" COMPLETE[146]":ZX=1:A$=V$:GOSUB510:RETURN
2270 FORA=0TON:CC$(A,1)=F$(A,D):NEXTA:IFB=>KL-1THENGOSUB2560:A$=V$:RETURN
2280 FORDD=DTOB-1:FORA=0TON:F$(A,DD)=F$(A,DD+1):NEXTA:NEXTDD
2290 B=B-1:GOSUB510:GOTO2150
2300 B=B+1:FORDD=BTOD+1STEP-1:FORA=0TON:F$(A,DD)=F$(A,DD-1):NEXTA:NEXTDD
2310 FORA=0TON:F$(A,D)=CC$(A,1):NEXTA:GOTO2260
2320 PRINT"[147]FIELDS ARE:":FORA=0TON:PRINT"";A;"[146]";FF$(A):NEXTA:IFC=6THENRETURN
2330 IFC=6THENPRINT"";D;"RECS. ";NN;"FIELDS":RETURN
2340 IFC<>6THENPRINT"";B;"RECS. ";N+1;"FIELDS":RETURN
2350 IFY=1THENRETURN
2352 IFC<>1THENGOTO2375
2353 PRINT"[147]PLEASE ENTER THE NUMBER OF FIELDS[146] EACH RECORD WILL HAVE"
2355 INPUT LK:X$="REARRANGING[146][145]"
2360 PRINT"BELOW YOU MUST TELL ME THE APPROX. NO. OF RECORDS[146]";
2361 PRINT" THE FILE WILL CONTAIN. THE HIGHER THE NUMBER OF FIELDS, THE";
2363 PRINT" LOWER THE NUMBER OF RECORDS YOU CAN HAVE DUE TO MEMORY ";
2365 PRINT"LIMITATIONS. ASSUMING YOU HAVE 6 FIELDS OR LESS, YOU'LL ";
2366 PRINT"PROBABLY BE ABLE TO ENTER 150 BELOW. IF WHEN YOUR 150TH RECORD";
2367 PRINT" IS ENTERED THERE APPEARS TO BE ENOUGH MEMORY FOR MORE (CHE";
2368 PRINT"CK MEMORY WITH MENU ITEM 11), SAVE THE FILE, BREAK FROM THE PROGR";
2369 PRINT"AM, RE-RUNIT AND LOAD[146] THE FILE, AT WHICH POINT YOUCAN ENTER A";
2370 PRINT" LARGER NUMBER."
2372 INPUT"HOW MANY RECORDS[146] DO YOU WISH THE FILE TO CONTAIN";KL
2373 GOTO 2380
2375 PRINT"ENTER A GREATER NUMBER THAN THE"
2376 PRINT"CURRENT NO. OF RECORDS IN THIS FILE IF"
2377 PRINT"YOU WISH TO ADD TO IT. OTHERWISE"
2378 PRINT"ENTER THE ABOVE NO.":INPUT"DIMENSION FOR HOW MANY RECORDS";KL
2379 INPUT"ENTER THE NO. OF FIELDS[146] SHOWN ABOVE AND PRESS RETURN";LK
2380 KL=KL+1:LK=LK-1:DIMF$(LK,KL),FF$(LK),F1(KL),F3(KL),S$(LK,1)
2390 DIMCC$(LK,1),U(LK),P$(LK):PRINT"[147]";
2400 VL=36878:VO=36874:Y=1:B=1:RETURN
2410 PRINT" Y[146] ";QX$;" F1[146] ABORT"
2420 GETA$:IFA$="Y"ORA$="[133]"THENRETURN
2430 GOTO2420
2440 C7=9:PRINT"[147]FILES OPEN ARE:[146]":IFC1THENPRINT" 1[146] TAPE LOAD"
2450 IFC4THENPRINT" 4[146] PRINTER"
2460 IFC6THENPRINT" 6[146] TAPE/DISK SAVE"
2470 PRINT" RETURN[146] TO CLOSE NONE"
2480 INPUT"CLOSE WHICH FILE";C7:IFC7=1THENCLOSE1:C1=0
2490 IFC7=4THENPRINT#4:CLOSE4:C4=0
2500 IFC7=6THENFORA=0TON:PRINT#6,"@@@";CHR$(13);:NEXTA:PRINT#6:CLOSE6:C6=0
2510 RETURN
2520 PRINT"RETURNING TO MENU":FORD=B+1TOKL:FORA=0TON:F$(A,D)="":NEXTA,D:RETURN
2530 IF Y<>1THEN RETURN
2540 GOSUB2320:PRINT"[145]ENTER NEW NAME OR PRESS RETURN[146]":PRINT
2550 FORA=0TON:PRINT"FIELD";A;:INPUTFF$(A):NEXTA:RETURN
2560 PRINT"ARRAY FULL-CAN'T DO[146]":FORA=1TO10:GOSUB510:NEXTA:RETURN
2570 INPUT"FROM FIELD";P3:INPUT"THRU FIELD";P4
2580 INPUT"CALC FIELD LENGTHS";P1$:IFP1$<>"Y"THENRETURN
2590 PRINT"[147]CALCULATING LENGTHS[146]"
2600 FORA=P3TOP4:FORD=1TOB-1:IFLEN(F$(A,D))>U(A)THENU(A)=LEN(F$(A,D))
2610 NEXTD:PRINT"FD#";A;" IS";U(A):NEXTA
2620 INPUT"CALC PRINT POSITIONS";P1$:IFP1$="Y"THEN2650
2630 PRINT"FIELD LENGTHS ARE:":FORA=P3TOP4:PRINT"FIELD";A;" IS";U(A):NEXTA
2640 PRINT"WRITE THESE DOWN":GOSUB2410:RETURN
2650 U2=0:P$(P3)="01":IFSV$="Y"THENU2=U2+6:P$(P3)="05"
2660 TT=0:IFSV$="Y"THENTT=6
2670 FORA=P3TOP4:TT=TT+U(A)+1:NEXTA:PRINT"LINE LENGTH IS";TT
2680 PRINT"FD#";P3;" AT ";P$(P3)
2690 FORA=P3+1TOP4:U2=U2+U(A-1)+2:P$(A)=STR$(U2)
2700 IFU2<10THENP$(A)="0"+MID$(P$(A),2,2)
2710 IFLEN(P$(A))>2THENP$(A)=MID$(P$(A),2,2)
2720 PRINT"FD#";A;" AT ";P$(A):NEXTA:RETURN
2730 QX$="[157][157][157][157] ":IFUD$<>"Y"THENRETURN
2740 PRINT"[147] S[146]CREEN ONLY P[146]RINTER ALSO F1[146] ABORT"
2750 GETDR$:IFDR$=""THEN2750
2760 IFDR$="[133]"THENRETURN
2770 PRINT"STAND BY...":OPEN1,8,0,"$0":GET#1,A$,B$:IFDR$="P"THENOPEN4,4
2780 PRINT"[145]F1[146]-ABORT ":PRINT"SPACE[146]-START/STOP"
2790 GET#1,A$,B$:GET#1,A$,B$:O=0:IFA$<>""THENO=ASC(A$)
2800 IFB$<>""THENO=O+ASC(B$)*256
2810 PRINT"";MID$(STR$(O),2);TAB(3);"[146]";
2820 IFDR$="P"THENPRINT#4,MID$(STR$(O),2);CHR$(16)"03";
2830 GET#1,B$:IFST<>0THEN2930
2840 IFB$<>CHR$(34)THEN2830
2850 GET#1,B$:IFB$<>CHR$(34)THENPRINTB$;:IFDR$="P"THENPRINT#4,B$;
2860 IFB$<>CHR$(34)THEN2850
2870 GET#1,B$:IFB$=CHR$(32)THEN2870
2880 PRINTTAB(18);:K$=""
2890 K$=K$+B$:GET#1,B$:IFB$<>""THEN2890
2900 PRINT""LEFT$(K$,3):IFDR$="P"THENPRINT#4,CHR$(16)"18";LEFT$(K$,3)
2910 GETT$:IFT$<>""THEN2990
2920 IFST=0THEN2790
2930 PRINT" BLOCKS FREE":IFDR$="P"THENPRINT#4,"BLOCKS FREE"
2940 CLOSE1:IFDR$="P"THENPRINT#4:CLOSE4
2950 GOSUB2410:RETURN
2960 QX$="[157][157][157][157] ":PRINT"[147]":IFUD$<>"Y"THENRETURN
2970 GET#15,A$:PRINTA$;:IFA$<>CHR$(13)GOTO2970
2980 PRINT:GOTO2950
2990 IFT$="[133]"THEN2930
3000 GETT$:IFT$="[133]"THEN2930
3010 IFT$=" "THEN2920
3020 GOTO3000
3030 PRINTPT$;"D[146]ISK T[146]APE"
3040 GETSV$:IFSV$=""THEN3040
3050 IFSV$<>"D"ANDSV$<>"T"THEN3040
3060 C$="N":PRINT"ENTER FILE NAME. DISK USERS CAN ENTER "
3062 PRINT"@DIR[146] TO VIEW DIRECTORY":INPUTC$
3070 IFC$="@DIR"THENGOSUB2730
3080 IFC$="@DIR"THEN3060
3090 RETURN
3100 IFY<>1THENRETURN
3110 GOSUB2320:X$=CHR$(13):C$="N":INPUT"INDEX[146] WHICH FIELD";U
3112 IFU>NTHENGOSUB5000:RETURN
3120 PRINT"TO 1[146] SCREEN 2[146] TAPE 3[146] DISK 4[146] PRINTER":INPUTGH
3130 INPUT"NAME FOR INDEX";LD$:IFLD$="@DIR"THENGOSUB2730:GOTO3130
3140 C$=LD$:QX$="INDEX":GOSUB2410:IFA$<>"Y"THENRETURN
3150 IF C6=1THENPRINT"CAN'T DO - FILE OPEN[146]":FORA=1TO6:GOSUB510:NEXTA:RETURN
3160 IFGH=2THENOPEN6,1,1,C$:PRINT#6,C$;X$;1;X$;B;X$;FF$(U);X$;
3170 IFGH=3THENOPEN6,8,5,"@0:"+C$+",S,W":PRINT#6,C$;X$;1;X$;B;X$;FF$(U);X$;
3180 PRINT"[147]";F$(U,1):IFGH=4THENOPEN4,4:PRINT#4,C$:PRINT#4:PRINT#4,F$(U,1)
3190 IFGH=2ORGH=3THENPRINT#6,F$(U,1);X$;
3200 FORD=2TOB-1:FORA=1TOD-1:IFF$(U,D)=F$(U,A)THEN3240
3210 NEXTA:GETA$:IFA$<>""THENA=D-1:D=B-1:PRINT"ABORTED - PRESS F1[146]":GOTO3260
3220 PRINTF$(U,D):IFGH=4THENPRINT#4,F$(U,D)
3230 IFGH=2ORGH=3THENPRINT#6,F$(U,D);X$;
3240 NEXTD
3250 PRINT"COMPLETED - PRESS F1[146]"
3260 IFGH=4THENPRINT#4:CLOSE4
3270 IFGH=2ORGH=3THENPRINT#6,"@@@";X$:CLOSE6
3280 GOSUB2420:RETURN
3290 GOSUB2320:INPUT"SEARCH FOR (@@@[146] ABORT) ";R$
3300 IF R$="@@@"THEN PRINT"[147]":D=D-1:RETURN
3310 INPUT"SEARCH ON FIELD";F1:IFF1>NTHENGOSUB5000:GOTO3310
3320 PRINT"[147]SEARCHING FOR ";R$
3330 IF D=>B-1THEN3400
3340 FOR S=D+1TOB-1
3350 IFLEN(F$(F1,S))<1ORLEN(F$(F1,S))<LEN(R$)THEN3390
3360 FORF2=1TOLEN(F$(F1,S))-LEN(R$)+1
3370 IF MID$(F$(F1,S),F2,LEN(R$))=R$THEND=S-1:FORS=1TO2:NEXTS:PRINT"[147]":RETURN
3380 NEXTF2
3390 NEXTS
3400 PRINT"NOT FOUND":GOSUB510:FORO=1TO300:NEXTO:D=D-1:RETURN
3410 D=1:PRINT"[147]"
3411 PRINT" G[146]OTO P[146]REV. H[146]ELP X[146]=CONFIG F1[146]=ABORT"
3413 IFA$="H"THEN3450
3420 IFX1=2ANDD>1THENPRINT"[147]"
3421 PRINT" "
3422 PRINT" "
3423 PRINT" [145][145][145]":PRINT
3424 PRINTM1$;F3(D);M4$:PRINT
3430 FOR A=0TON:PRINT"";FF$(A);": [146]";F$(A,F3(D)):NEXTA
3440 IFD=FTHENPRINT" "
3442 IFD=FTHENPRINT"NO. FOUND: ";F;" SUMMATION: ";T
3444 IFD=FTHENPRINT" "
3450 GETA$:IFA$=""THEN3450
3460 IFA$="[133]"THENPRINT"[147]":RETURN
3465 IFA$="X"THENGOSUB4500:GOTO3420
3467 IFA$="H"THEN3411
3470 IFA$="P"AND D>1THEND=D-1:PRINT"[147]":GOTO3420
3480 IFA$="G"THENPRINT"GOTO WHERE[146]":INPUTD:IFD>FTHEND=F:PRINT"[147]":GOTO3420
3490 IF A$="G"THENPRINT"[147]":GOTO3420
3500 IFD>FTHEN3450
3510 D=D+1:GOTO3420
3520 PRINT"[147] COLOR CHANGE":PRINT"PRESS:":PRINT" F1[146] - EXIT"
3530 PRINT" F3[146] - BACKGROUND"
3540 PRINT" F4[146] - BOARDER":PRINT" F5[146] - CHARACTER"
3550 C7=PEEK(53281):C8=PEEK(53280):C9=PEEK(646)
3560 GET CL$:IFCL$=""THEN3560
3570 IFCL$="[134]"THENC7=C7+1:IFC7>15THENC7=0
3580 IFCL$="[134]"THENPOKE53281,C7:GOTO3560
3590 IFCL$="[138]"THENC8=C8+1:IFC8>15THENC8=0
3600 IFCL$="[138]"THENPOKE53280,C8:GOTO3560
3610 IFCL$="[135]"THENC9=C9+1:IFC9>15THENC9=0
3620 IFCL$="[135]"THENPOKE646,C9:GOTO3520
3630 IFCL$="[133]"THENRETURN
3640 GOTO3560
3650 PRINT"[147] SEND DISK COMMAND[146]"
3660 PRINT"SAMPLE SYNTAX (USE QUOTES AT START AND END)"
3670 PRINT"SCRATCH FILE[146] S0:FILENAME"
3680 PRINT"RENAME FILE[146] R0:NEWNAME=OLDNAME"
3690 PRINT"DUP A FILE[146] C0:NEWFILE=0:OLDFILE"
3700 PRINT"INITIALIZE DRIVE[146] I"
3710 PRINT"VALIDATE DISK[146] V"
3715 PRINT"FORMAT NEW DISK[146] N0:DISKNAME,ID"
3720 PRINT"ENTER STRING TO SEND (BEGIN AND END WITH DOUBLE QUOTE)"
3722 PRINT"OR PRESS RETURN[146] TO RETURN TO MENU"
3730 FM$="X":INPUT FM$
3740 IF LEFT$(FM$,1)="S"THEN3800
3750 IF LEFT$(FM$,1)="R"THEN3840
3760 IF LEFT$(FM$,1)="C"THEN3870
3770 IF LEFT$(FM$,1)="I"THEN PRINT#15,"I":RETURN
3780 IF LEFT$(FM$,1)="V"THEN3910
3785 IF LEFT$(FM$,1)="X"THEN RETURN
3787 IF LEFT$(FM$,1)="N"THEN3950
3790 PRINT"INVALID - ABORTED[146]":FORT=1TO1000:NEXT:RETURN
3800 QX$="SCRATCH":PRINT"[147]SCRATCH THIS FILE":PRINTFM$:PRINT""
3810 GOSUB2410
3820 IFA$<>"Y"THEN RETURN
3830 PRINT"SCRATCHING FILE":PRINT#15,FM$:GOSUB3940:GOSUB2960:RETURN
3840 QX$="RENAME":PRINT"[147]RENAME A FILE":PRINTFM$:PRINT"":GOSUB2410
3850 IFA$<>"Y"THENRETURN
3860 PRINT"RENAMING THE FILE":PRINT#15,FM$:GOTO3940
3870 QX$="DUPLICATE":PRINT"[147]DUPLICATE A FILE[146]":PRINTFM$:PRINT""
3880 GOSUB2410
3890 IFA$<>"Y"THEN RETURN
3900 PRINT"DUPLICATING FILE":PRINT#15,FM$:GOTO3940
3910 QX$="VALIDATE":PRINT"[147]VALIDATE DISK[146]":GOSUB2410
3920 IFA$<>"Y"THENRETURN
3930 PRINT"VALIDATING DISK":PRINT#15,FM$:GOTO3940
3940 FORT=1 TO 2500:NEXT T:RETURN
3950 QX$="BEGIN FORMAT":PRINT"[147]CAUTION[146]: ERASES DISK ... PUT BLANK DISK ";
3951 PRINT"IN DRIVE NOW!!!"
3952 PRINT"FORMAT DISK NOW AS ";FM$:PRINT
3953 GOSUB2410:IFA$<>"Y"THEN RETURN
3955 PRINT"FORMATTING DISK":PRINT#15,FM$:GOSUB3940:GOSUB2960:RETURN
4000 PRINT" "
4001 PRINT" "
4002 PRINT" [145][145][145]":PRINT
4003 RETURN
4500 PRINT"[147]SYSTEM CONFIGURATION"
4505 PRINT" 1[146] - DISPLAY FORMAT":PRINT" 2[146] - RECORD INPUT DEFAULT"
4518 N1=0:INPUT"CHANGE WHICH CONFIGURATION ABOVE";N1:IFN1=0THENRETURN
4520 IFN1=1THEN4605
4522 GOTO4650
4605 PRINT"[147]RECORD DISPLAY FORMAT:[146]
4607 [153]"ENTER 1 WAIT FOR SCROLLING DISPLAY."
4608 [153]" 2 WAIT FOR 1 RECORD PER SCREEN."
4612 [153]"CURRENT DISPLAY FORMAT IS:":[139]X1[178]1[167][153]" SCROLLINGWAIT"
4614 [139]X1[178]2[167][153]" 1 PER SCREENWAIT"
4618 [133]X1:[153]"LOAD";:[142]
4650 [153]"LOADRECORD INPUT DEFAULT:"
4655 [153]"ENTER 1 WAIT IF YOU WISH TO BE ABLE TO"
4658 [153]"JUST PRESS RETURN ON A FIELD WHEN YOU"
4662 [153]"ARE ENTERING RECORDS WITH CREATE WAIT OR"
4665 [153]" ADD RECORDS WAIT ROUTINES TO MAKE THE"
4668 [153]"FIELD THE SAME AS THAT FIELD IN THE"
4670 [153]"PREVIOUS RECORD."
4675 [153]"ENTER 2 WAIT IF YOU WISH TO PRESS RETURN"
4678 [153]"AND LEAVE THAT FIELD BLANK. (NOTE THAT THE PROGRAM PUTS A PERIOD ";
4679 [153]" IN A BLANK FIELD.)"
4685 [153]"CURRENT ENTRY DEFAULT IS: ";:[139]X2[178]1[167][153]"COPY PREVIOUS FIELDWAIT"
4688 [139] X2[178]2[167][153]"FIELD BLANKWAIT"
4690 [133]"ENTER THE ENTRY DEFAULT YOU WISH";X2:[142]
4700 [153]"LOAD * * * H E L P * * *":[153]"FOR COMPLETE INSTRUCTION YOU SHOULD"
4705 [153]"READ THE FILE CALLED DBASE64.INSTRWAIT."
4710 [153]"USING A SEQUENTIAL FILE READER-"
4715 [153]"PRINTER."
4785 [153]"AUTHORWAIT: DICK JACOBS - BALLSTON SPA, NY"
4797 [153]"PRESS ANY KEY TO RETURN"
4798 [161]A$:[139]A$[178]""[167]4798
4799 [142]
5000 [153]"NO SUCH FIELD - MAX. = WAIT";N:[129]A[178]1[164]12:[141]510:[130]A:[142]
0